package com.infore.common.model.entity.exchange;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.infore.common.base.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 作业信息表
 * </p>
 *
 * @author lijh
 * @since 2023-02-13
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_ex_job_info")
public class TJobInfo extends BaseModel<TJobInfo> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "job_id", type = IdType.UUID)
    private String jobId;
    /**
     * 作业名称
     * 示例：定时同步东莞空气站
     */
    @TableField("job_name")
    private String jobName;

    /**
     * 实现类路径
     * 示例：quartzTask （参考com.infore.exchange.main.service.impl。QuartzTaskServiceImpl）
     */
    @TableField("bean_name")
    private String beanName;
    /**
     * 实现方法
     * 示例：rdbmsDataExchang （参考com.infore.exchange.main.service.impl。QuartzTaskServiceImpl 方法 rdbmsDataExchang）
     *
     */
    @TableField("method_name")
    private String methodName;
    /**
     * 实现方法参数
     */
    @TableField("method_params")
    private String methodParams;
    /**
     * cron表达式，6位最后一位为年的不需要 ?
     */
    @TableField("cron_schedule")
    private String cronSchedule;
    /**
     * 上次执行时间
     */
    @TableField("prev_exec_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//从数据库读出日期格式时，进行转换的规则
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//接受从前端传入的日期格式，映射到java类日期属性的规则
    private Date prevExecTime;
    /**
     * 下次执行时间
     */
    @TableField("next_exec_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//从数据库读出日期格式时，进行转换的规则
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//接受从前端传入的日期格式，映射到java类日期属性的规则
    private Date nextExecTime;
    /**
     * 状态 停止：0，运行：1
     */
    @TableField("job_state")
    private Integer jobState;
    /**
     * 作业类型
     */
    @TableField("job_type")
    private String jobType;
    /**
     * 描述
     */
    private String description;
    /**
     * 创建人ID
     */
    @TableField("create_userId")
    private String createUserId;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//从数据库读出日期格式时，进行转换的规则
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//接受从前端传入的日期格式，映射到java类日期属性的规则
    private Date createTime;
    /**
     * 更新人ID
     */
    @TableField("update_userId")
    private String updateUserId;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//从数据库读出日期格式时，进行转换的规则
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//接受从前端传入的日期格式，映射到java类日期属性的规则
    private Date updateTime;


    @TableField(exist = false)
    private List<TTaskInfo> tasks;


    @TableField(exist = false)
    private String taskIdsStr;

    @Override
    protected Serializable pkVal() {
        return this.jobId;
    }

}
